#include "xserialportlist.h"

XSerialPortList::XSerialPortList(QObject *parent) : QObject(parent)
{
    timer=new QTimer;
    scanCycleMs=200;    //扫描周期
    oldPortStringList.clear();  //清除旧的端口列表
    connect(timer,&QTimer::timeout,this,&XSerialPortList::slot_onTimeOut);
}

XSerialPortList::XSerialPortList(quint16 cycleMs)
{
    timer=new QTimer;
    scanCycleMs=cycleMs;    //扫描周期
    oldPortStringList.clear();  //清除旧的端口列表
    connect(timer,&QTimer::timeout,this,&XSerialPortList::slot_onTimeOut);
}

XSerialPortList::~XSerialPortList()
{
    delete timer;   //析构定时器
}

void XSerialPortList::ScanStart()   //扫描开始
{
    timer->stop();
    timer->start(scanCycleMs);  //开启定时器
}

void XSerialPortList::ScanStop()    //扫描结束
{
    timer->stop();
}

void XSerialPortList::slot_onTimeOut()
{
    //定时刷新串口
    QStringList newPortStringList;
    foreach(const QSerialPortInfo &info,QSerialPortInfo::availablePorts())
    {
        newPortStringList+=info.portName();
    }
    if(newPortStringList.size()!=oldPortStringList.size())
    {
        oldPortStringList=newPortStringList;
        emit signal_onNewSerialPort(oldPortStringList);
    }
}
